これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用してください:
Service APIを使用してトレースをログに記録しクエリする
以下のガイドでは、Weave Service APIを使用してトレースをログに記録する方法を学びます。具体的には、Service APIを使用して以下を行います:- シンプルなLLMの呼び出しと応答のモックを作成し、Weaveにログを記録します。
- より複雑なLLMの呼び出しと応答のモックを作成し、Weaveにログを記録します。
- ログに記録されたトレースに対してサンプル検索クエリを実行します。
ログに記録されたトレースを表示する
このガイドのコードを実行して作成されたすべてのWeaveトレースは、Traces タブのWeaveプロジェクト(team_id\project_id
で指定)で、トレース名を選択することで表示できます。
始める前に、前提条件
Prerequisites: Set variables and endpoints
以下のコードは、Service APIにアクセスするために使用されるURLエンドポイントを設定します:https://trace.wandb.ai/call/start
https://trace.wandb.ai/call/end
https://trace.wandb.ai/calls/stream_query
project_id
:トレースをログに記録したいW&Bプロジェクトの名前。team_id
:あなたのW&Bチーム名。wandb_token
:あなたのW&B認証トークン。
シンプルなトレース
以下のセクションでは、シンプルなトレースの作成手順を説明します。シンプルなトレースを開始する
以下のコードはサンプルのLLM呼び出しを作成しpayload_start
、url_start
エンドポイントを使用してWeaveにログを記録します。payload_start
オブジェクトはOpenAIのgpt-4o
への呼び出しを模倣し、クエリはWhy is the sky blue?
です。
成功すると、このコードはトレースが開始されたことを示すメッセージを出力します:
シンプルなトレースを終了する
シンプルなトレースを完了するために、以下のコードはサンプルのLLM呼び出しpayload_end
を作成し、url_end
エンドポイントを使用してWeaveにログを記録します。payload_end
オブジェクトはOpenAIのgpt-4o
からのレスポンスを模倣し、クエリはWhy is the sky blue?
です。このオブジェクトは、価格概要情報とチャット完了がWeaveダッシュボードのトレースビューで生成されるようにフォーマットされています。
成功すると、このコードはトレースが完了したことを示すメッセージを出力します:
複雑なトレース
以下のセクションでは、マルチオペレーションRAG検索に似た子スパンを持つより複雑なトレースの作成手順を説明します。複雑なトレースを開始する
以下のコードは、複数のスパンを持つより複雑なトレースを作成する方法を示しています。これの例としては、検索拡張生成(RAG)検索の後にLLM呼び出しを行うことが挙げられます。最初の部分では、全体的な操作を表す親トレース(payload_parent_start
)を初期化します。この場合、操作はユーザークエリCan you summarize the key points of this document?
を処理することです。
payload_parent_start
オブジェクトは、マルチステップワークフローの初期ステップを模倣し、url_start
エンドポイントを使用して操作をWeaveにログ記録します。
成功すると、このコードは親呼び出しがログに記録されたことを示すメッセージを出力します:
複雑なトレースに子スパンを追加する:RAGドキュメント検索
以下のコードは、前のステップで開始した親トレースに子スパンを追加する方法を示しています。このステップは、全体的なワークフローにおけるRAGドキュメント検索のサブ操作をモデル化しています。 子トレースはpayload_child_start
オブジェクトで開始され、以下を含みます:
trace_id
:この子スパンを親トレースにリンクします。parent_id
:子スパンを親操作に関連付けます。inputs
:検索クエリをログに記録します。例えば、"This is a search query of the documents I'm looking for."
url_start
エンドポイントへの呼び出しが成功すると、コードは子呼び出しが開始され完了したことを示すメッセージを出力します:
複雑なトレースに子スパンを追加する:LLM完了呼び出し
以下のコードは、親トレースに別の子スパンを追加する方法を示しており、LLM完了呼び出しを表しています。このステップは、前のRAG操作で取得されたドキュメントコンテキストに基づくAIの応答生成をモデル化しています。 LLM完了トレースはpayload_child_start
オブジェクトで開始され、以下を含みます:
trace_id
:この子スパンを親トレースにリンクします。parent_id
:子スパンを全体的なワークフローに関連付けます。inputs
:LLMの入力メッセージをログに記録し、ユーザークエリと追加されたドキュメントコンテキストを含みます。model
:操作に使用されるモデルを指定します(gpt-4o
)。
payload_child_end
オブジェクトはoutput
フィールドにLLMが生成した応答をログに記録することでトレースを終了します。使用状況の概要情報もログに記録されます。
成功すると、コードはLLM子スパントレースが開始され終了したことを示すメッセージを出力します:
複雑なトレースを終了する
以下のコードは、親トレースを完了させ、ワークフロー全体の完了をマークする方法を示しています。このステップでは、すべての子スパン(RAG検索やLLM完了など)の結果を集約し、最終的な出力とメタデータをログに記録します。 トレースはpayload_parent_end
オブジェクトを使用して完了し、以下を含みます:
id
:初期親トレース開始からのparent_call_id
。output
:ワークフロー全体の最終出力を表します。summary
:ワークフロー全体の使用データを統合します。prompt_tokens
:すべてのプロンプトに使用されたトークンの合計。completion_tokens
:すべての応答で生成されたトークンの合計。total_tokens
:ワークフローの合計トークン数。requests
:行われたリクエストの総数(この場合、1
)。
検索クエリを実行する
以下のコードは、前の例で作成されたトレースをクエリする方法を示しており、inputs.model
フィールドがgpt-4o
に等しいトレースのみをフィルタリングします。
query_payload
オブジェクトには以下が含まれます:
project_id
:クエリするチームとプロジェクトを識別します。filter
:クエリがtrace roots(トップレベルのトレース)のみを返すようにします。query
:$expr
operator:$getField
:inputs.model
フィールドを取得します。$literal
:inputs.model
が"gpt-4o"
に等しいトレースを一致させます。
limit
:クエリを10,000件の結果に制限します。offset
: クエリを最初の結果から開始します。sort_by
: 結果をstarted_at
タイムスタンプの降順で並べ替えます。include_feedback
: 結果からフィードバックデータを除外します。